Distributed computing is performed on distributed computing systems. A distributed system may comprise multiple autonomous computers communicating through a computer network. The computers may interact with each other in order to achieve a common goal. A distributed application is a computer program that runs on a distributed system. For example, a distributed application running on a distributed computing system may be used to solve computational problems that are divided into a plurality of tasks. Each task may be solved by one computer of the distributed computing system.
Applications are computer software operable to help a user perform a singular or multiple related specific tasks. Typical examples are word processors, spreadsheets, media players and database applications. Applications may be, for example, execution-flow based or data-flow based.
Debugging is a methodical process of finding and reducing a number of bugs or defects in an application in order to make the application behave as intended. Debugging may involve interactive debugging, control flow, integration testing, log files, monitoring, memory dumps and/or statistical process control. Conventional debugging may step through, follow or manipulate an execution flow of an application.
Tracing is a process related to debugging in which the flow of execution through an application or between components of a distributed application is tracked by the application developer. When tracing, developers follow or record the execution flow or changes to the data as it transits specific parts of the application, or responds to specific application events. The data captured while tracing may include snapshots of the application's state as well as timestamps. This information is helpful for enhancing application understanding and diagnosing performance problems or data transformation errors.